package org.jz.gae.redbook.spb.client;

import java.util.ArrayList;

import org.jz.gae.redbook.spb.shared.DistrictEntityView;
import org.jz.gae.redbook.spb.shared.FamilyEntityView;
import org.jz.gae.redbook.spb.shared.LocationEntityView;
import org.jz.gae.redbook.spb.shared.SpeciesEntityView;

import com.google.gwt.user.client.rpc.AsyncCallback;

public interface RedBookServiceAsync 
{

	void greetServer(String name, AsyncCallback<String> callback);

	void addFamily(FamilyEntityView family,
			AsyncCallback<FamilyEntityView> callback);

	void deleteFamily(String id, AsyncCallback<Boolean> callback);

	void getFamily(String id, AsyncCallback<FamilyEntityView> callback);

	void getFamilyDetails(AsyncCallback<ArrayList<FamilyEntityView>> callback);

	void updateFamily(FamilyEntityView contact,
			AsyncCallback<FamilyEntityView> callback);

	void addLocation(LocationEntityView location,
			AsyncCallback<LocationEntityView> callback);

	void deleteLocation(String id, AsyncCallback<Boolean> callback);

	void getLocation(String id, AsyncCallback<LocationEntityView> callback);

	void getLocationDetails(
			AsyncCallback<ArrayList<LocationEntityView>> callback);

	void getLocationsForSpecies(
		    String _SpeciesKey,
			AsyncCallback<ArrayList<LocationEntityView>> callback);

	void updateLocation(LocationEntityView contact,
			AsyncCallback<LocationEntityView> callback);

	void addDistrict(DistrictEntityView district,
			AsyncCallback<DistrictEntityView> callback);

	void deleteDistrict(String id, AsyncCallback<Boolean> callback);

	void getDistrict(String id, AsyncCallback<DistrictEntityView> callback);

	void getDistrictDetails(
			AsyncCallback<ArrayList<DistrictEntityView>> callback);

	void updateDistrict(DistrictEntityView district,
			AsyncCallback<DistrictEntityView> callback);

	void addSpecies(SpeciesEntityView species,
			AsyncCallback<SpeciesEntityView> callback);

	void deleteSpecies(String id, AsyncCallback<Boolean> callback);

	void getSpecies(String id, AsyncCallback<SpeciesEntityView> callback);

	void getSpeciesDetails(AsyncCallback<ArrayList<SpeciesEntityView>> callback);

	void updateSpecies(SpeciesEntityView species,
			AsyncCallback<SpeciesEntityView> callback);


}
